package edu.server.dominio;

import org.hibernate.HibernateException;
import org.hibernate.Session;

import edu.server.repositorio.Inventario;
import edu.server.util.HibernateUtil;

public class D_Inventario {

	public D_Inventario(){}
	
	/**
	 * Método que busca el inventario para un producto determinado
	 * @param idProducto. Id del producto cuyo inventario se busca.
	 * @return Inventario. Retorna el inventario del producto, si existe.
	 */
	public Inventario buscarPorProducto(int idProducto, String medida1, String medida2)
	{
		Inventario inventario;
		
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		
		session.beginTransaction();
		
		String hql = "from Inventario " +
					 "where producto.idProducto=" + idProducto +
					 " and medida1 like " + medida1 + 
					 " and medida2 like " + medida2;
		
		inventario = (Inventario) session.createQuery(hql).uniqueResult();
		
		session.close();
		
		return inventario;
	}
	
	public void registrar(Inventario inventario)
	{
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		
		try
		{
			session.beginTransaction();
			
			session.saveOrUpdate(inventario);
			
			session.getTransaction().commit();
		}
		catch(HibernateException he)
		{
			session.getTransaction().rollback();
			throw he;
		}
	}

	public Inventario buscarInventario(int idInventario) {

		Inventario inventario = new Inventario();
		
		Session sess = HibernateUtil.getSessionFactory().getCurrentSession();
		
		sess.beginTransaction();
		
		inventario = (Inventario) sess.createQuery("FROM Inventario I" +
												   " WHERE I.idInventario = " + idInventario).list().get(0);
		sess.close();
		
		return inventario;
	}
}
